package com.itheima.service.db.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.domain.db.TestSoulReport;
import com.itheima.mapper.TestSoulReportMapper;
import com.itheima.service.db.TestSoulReportService;
import org.apache.dubbo.config.annotation.DubboService;
import org.aspectj.weaver.ast.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@DubboService
public class TestSoulReportServiceImpl implements TestSoulReportService {
    @Autowired
    TestSoulReportMapper testSoulReportMapper;

    @Override
    public Integer save(TestSoulReport testSoulReport) {
        return testSoulReportMapper.insert(testSoulReport);
    }

    @Override
    public void update(TestSoulReport testSoulReport) {
        testSoulReportMapper.updateById(testSoulReport);
    }

    @Override
    public TestSoulReport findByUserIdAndNaireId(Long userId, Long naireId) {
        LambdaQueryWrapper<TestSoulReport> lqw = new LambdaQueryWrapper<>();
        lqw.eq(TestSoulReport::getUserId, userId).eq(TestSoulReport::getNaireId, naireId);
        return testSoulReportMapper.selectOne(lqw);
    }

    @Override
    public TestSoulReport findById(Long reportId) {
        return testSoulReportMapper.selectById(reportId);
    }

    @Override
    public List<TestSoulReport> findSimilar(Long naireId, Long userId, Long resultId) {
        //查询同一个问卷相同结果不是本人的10个报告
        LambdaQueryWrapper<TestSoulReport> lqw = new LambdaQueryWrapper<>();
        lqw.eq(TestSoulReport::getNaireId, naireId).eq(TestSoulReport::getResultId, resultId)
                .ne(TestSoulReport::getUserId, userId).last("limit 10");
        return testSoulReportMapper.selectList(lqw);
    }

    @Override
    public TestSoulReport findLastReport(Long userId, Long naireId) {
        LambdaQueryWrapper<TestSoulReport> lqw = new LambdaQueryWrapper<>();
        lqw.eq(TestSoulReport::getUserId, userId).eq(TestSoulReport::getNaireId, naireId);
        return testSoulReportMapper.selectOne(lqw);
    }
}
